import { defineConfig, loadEnv } from "vite";
import { resolve } from "path";
import { wrapperEnv } from "../../build/getEnv";
import { createVitePlugins } from "../../build/plugins";
import { createProxy } from "../../build/proxy";

// https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
	//获取各种环境下的对应的变量
	const viteEnv = wrapperEnv(loadEnv(mode, process.cwd()));
	return {
		base: viteEnv.VITE_PUBLIC_PATH,
		plugins: createVitePlugins(viteEnv),
		server: {
			host: "0.0.0.0",
			port: viteEnv.VITE_PORT,
			open: viteEnv.VITE_OPEN,
			cors: true,
			proxy: createProxy(viteEnv.VITE_PROXY)
		},
		resolve: {
			alias: {
				"@": resolve(__dirname, "src"),
				"@assets": resolve(__dirname, "../../packages/shared-assets/src/images/modules")
			}
		},
		esbuild: {
			pure: viteEnv.VITE_DROP_CONSOLE ? [("console.log", "debugger")] : [] // 移除 console.log
		},
		build: {
			outDir: "../../dist/cookbook",
			minify: "esbuild",
			// esbuild 打包更快，但是不能去除 console.log，terser打包慢，但能去除 console.log
			// minify: "terser",
			// terserOptions: {
			// 	compress: {
			// 		drop_console: viteEnv.VITE_DROP_CONSOLE,
			// 		drop_debugger: true
			// 	}
			// },
			sourcemap: false,
			// 禁用 gzip 压缩大小报告，可略微减少打包时间
			reportCompressedSize: false,
			// 规定触发警告的 chunk 大小
			chunkSizeWarningLimit: 2000,
			rollupOptions: {
				output: {
					// Static resource classification and packaging
					chunkFileNames: "assets/js/[name]-[hash].js",
					entryFileNames: "assets/js/[name]-[hash].js",
					assetFileNames: "assets/[ext]/[name]-[hash].[ext]"
				}
			}
		}
	};
});
